The invention pertains to digital data processing and more particularly, by way of example, to proactively managing development and performance of digital data processing applications. The invention can be applied, by way of example, to the design and implementation of enterprise software systems.
Enterprise software systems routinely fail to process transactions quickly enough to satisfy business needs, especially as the number of users and intensity of processing increases. It has traditionally been difficult to “spec out” requirements for new software projects that would avoid these scalability and performance issues, since application development itself introduces much variability. In addition, original assumptions about the scalability of a system frequently turn out to be invalid. This is exacerbated by changing user requirements.
The end result is often that an application completed by a developer has performance and scaling characteristics that differ significantly from the customer's needs. In order to remedy this, the “completed” application can be sent back for further development—which starts a vicious cycle. Alternatively, it may be necessary to buy significantly more computer hardware to run the application and, thereby, create a conflict with the original budget.
A related problem exists after the application has moved into production. Unanticipated resource consumption by some users or system processes may result in the entire system or application becoming non-responsive.
It is a common expectation that enterprise software vendors provide performance guidelines that ensure a certain number of users can be supported on a given capacity platform. This approach offers a false sense of security, since, in reality, there is a great amount of variability in the application development process that invalidates the vendor's assumptions.
To accommodate this, customers can test the performance of applications at the end of the development process by simulating a large number of users and measuring application response. A drawback here is that, by the time a performance problem is discovered, remediation may involve significant expense, e.g., buying new hardware, sending the application back to development, redefining the specification for the project, and so forth.
It is possible to test the performance of the application concurrently with the development process. However, this requires a dedicated set of human and computer resources. It is also difficult to test the developmental application, except at certain milestones when it is stable. If the performance results are unsatisfactory, or significantly different from original assumptions, any attempts to remediate are likely to interfere with the development process and to throw development off-track.
Another approach is to perform a detailed analysis of a system's or application's behavior with a single user and then project how the system will behave as the number of users increases; see, United States Patent Publication No. 2005/0216235, entitled “Scalability Test and Analysis”). This approach suffers from the same limitations as above, e.g., it requires a completed application to measure and project performance.
In view of the foregoing, an object of this invention is to provide improved methods and apparatus for digital data processing.
A related object of the invention is to provide such methods and apparatus as facilitate the design of applications, e.g., for the enterprise.
Yet another object of the invention is to provide such methods and apparatus as facilitate the design of right-sized and appropriately scalable applications.